﻿Option Strict On

Namespace FTP
    ''' <summary>
    ''' Enumeration representing the type of integrity algorithm used to verify the integrity of the file after transfer and storage.
    ''' </summary>
    Public Enum HashingFunction As Integer
        ''' <summary>
        ''' No algorithm slected.
        ''' </summary>
        None
        ''' <summary>
        ''' Cyclic redundancy check (CRC).  A CRC can be used in the same way as a checksum to detect accidental 
        ''' alteration of data during transmission or storage.
        ''' </summary>
        ''' <remarks>
        ''' It is often falsely assumed that when a message and its CRC are transmitted over an open channel, then when it arrives 
        ''' if the CRC matches the message's calculated CRC then the message can not have been altered in transit.
        ''' For this reason it is recommended to use SHA1 whenever possible.
        ''' </remarks>
        ''' <seealso cref="Sha1"/>
        Crc32
        ''' <summary>
        ''' Message-Digest algorithm 5 (MD5).  Hashing function used to produce a 'unique' signature to detect 
        ''' alternation of data during transmission or storage.
        ''' </summary>
        ''' <remarks>
        ''' MD5 is a weak algorithm and has been show to produce collisions.  For this reason it is recommended to use SHA1 whenere possible.
        ''' </remarks>
        ''' <seealso cref="Sha1"/>
        Md5
        ''' <summary>
        ''' Secure Hash Algorithm (SHA).  cryptographic hash functions designed by the National Security Agency (NSA) and published by the NIST as a U.S. Federal Information Processing Standard.
        ''' </summary>
        ''' <remarks>
        ''' SHA1 is the recommended integrity check algorithm.  Even a small change in the message will, with overwhelming probability, result in a completely different hash due to the avalanche effect.
        ''' </remarks>
        Sha1
    End Enum
End Namespace